package arrays;

import java.util.ArrayList;
import java.util.List;

/**
 * @author LiangMu
 * @version \$Id: P6.java, v 0.1, 2022年12月10日 11:13 LiangMu Exp $$
 */
public class P6 {
    public static void main(String[] args) {
        List<Integer> list = List.of(1,2,3,4);
        list = list.subList(4-2, 4);
        System.out.println(list);
    }
    /**
     * 给你一个整数数组 prices ，其中 prices[i] 表示某支股票第 i 天的价格。
     * <p>
     * 在每一天，你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买，然后在 同一天 出售。
     * <p>
     * 返回 你能获得的 最大 利润 。
     * <p>
     * 作者：力扣 (LeetCode)
     * 链接：https://leetcode.cn/leetbook/read/top-interview-questions-easy/x2zsx1/
     * 来源：力扣（LeetCode）
     * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
     */
    public static int maxProfit(int[] prices) {
        int res = 0, len = prices.length;
        for (int i = 1; i < len; ++i) {
            if (prices[i] > prices[i - 1]) {
                res += prices[i] - prices[i - 1];
            }
        }
        return res;
    }

    public static int maxProfit2(int[] prices, int k) {
        int len = prices.length;
        List<Integer> list = new ArrayList<>();
        for (int i = 1; i < len; ++i) {
            if (prices[i] > prices[i - 1]) {
                int res = prices[i] - prices[i - 1];
                list.add(res);
            }
        }
        if (list.size() <= k) {
            return list.stream().mapToInt(it -> it).sum();
        }
        list.sort(Integer::compare);
        return list.subList(len - k, len).stream().mapToInt(it -> it).sum();
    }
}
